import { connect } from 'react-redux'

import Count from '../components/Count'
import { add, sub, mul } from '../redux/actions'

// 把redux数据过滤之后传递个Count组件
// function mapStateToProps(state) {
//   console.log(state) // state是redux中所有的数据
//   return {
//     // 这个对象中写了什么,Count组件就可以通过props接收到什么
//     c: state.count,
//   }
// }

// const mapStateToProps = (state) => {
//   return {c: state.count}
// }
// const mapStateToProps = (state) => ({c: state.count})

// 是把dispatch藏起来(其实就是封装一个新的函数,新函数里面调用了dispatch)
// function mapDispatchToProps(dispatch) {
//   // connect函数会将return的对象通过props传递给Count组件,并且不会再给Count直接传递dispatch了
//   return {
//     inc: function (num) {
//       dispatch(add(num))
//     },
//     dec: function (num) {
//       dispatch(sub(num))
//     },
//     ride: function (num) {
//       dispatch(mul(num))
//     },
//   }
// }

export default connect((state) => ({ c: state.count }), {
  inc: add,
  dec: sub,
  ride: mul,
})(Count)
// 注意: 如果connect函数第一次调用的第二个参数,传入的不是函数,而是对象,则connect会自动根据对象中的键值对,帮我们创建mapDispatchToProps函数

// function mapDispatchToProps(dispatch) {
//   // connect函数会将return的对象通过props传递给Count组件,并且不会再给Count直接传递dispatch了
//   return {
//     x: function (num) {
//       dispatch(add(num))
//     },
//     y: function (num) {
//       dispatch(sub(num))
//     },
//     z: function (num) {
//       dispatch(mul(num))
//     },
//   }
// }
